﻿#ifndef STDCLASSFUN_H
#define STDCLASSFUN_H
#include "StdClassFun_global.h"
#include <QFileInfo>
#include <QDateTime>
#include <QRegExp>
#include <functional>
STDCLASSFUN_EXPORT qreal getGb(qint64 HighPart
	, qint64 LowPart);
// 获取当前时间到目标时间
STDCLASSFUN_EXPORT QDateTime currentDateTimeToCompleterDateTime(QDateTime& changeTime);
// 获取设置的时间间隔
STDCLASSFUN_EXPORT QDateTime getCompleterDateTime( );
// 设置时间间隔
STDCLASSFUN_EXPORT void setCompleterDateTime(QDateTime& changeTime);
// 设置时间间隔
STDCLASSFUN_EXPORT void setCompleterDate(QDate& changeTime);
// 设置时间间隔
STDCLASSFUN_EXPORT void setCompleterTime(QTime& changeTime);
// 加上一个时间
STDCLASSFUN_EXPORT void addCompleterTime(QTime& changeTime);
// 加上一个日期
STDCLASSFUN_EXPORT void addCompleterDate(QDate& changeTime);
// 设置年份
STDCLASSFUN_EXPORT void setCompleterDateYear(int paramYear);
// 设置月份
STDCLASSFUN_EXPORT void setCompleterDateMonth(int paramMonth);
// 设置天数
STDCLASSFUN_EXPORT void setCompleterDateDay(int paramDay);
// 设置小时
STDCLASSFUN_EXPORT void setCompleterTimeHour(int paramHour);
// 设置毫秒
STDCLASSFUN_EXPORT void setCompleterTimeMsec(int paramMsec);
// 设置分钟
STDCLASSFUN_EXPORT void setCompleterTimeMinute(int paramMinute);
// 设置秒
STDCLASSFUN_EXPORT void setCompleterTimeSecond(int paramSecond);
// 添加年份
STDCLASSFUN_EXPORT void addCompleterDateYear(int paramYear);
// 添加月份
STDCLASSFUN_EXPORT void addCompleterDateMonth(int paramMonth);
// 添加天数				
STDCLASSFUN_EXPORT void addCompleterDateDay(int paramDay);
// 添加小时				
STDCLASSFUN_EXPORT void addCompleterTimeHour(int paramHour);
// 添加分钟				
STDCLASSFUN_EXPORT void addCompleterTimeMinute(int paramMinute);
// 添加秒	
STDCLASSFUN_EXPORT void addCompleterTimeSecond(int paramSecond);
// 添加毫秒				
STDCLASSFUN_EXPORT void addCompleterTimeMsec(int paramMsec);
/***************************/

// 可用空间
STDCLASSFUN_EXPORT QString& getFreeBytesAvailableKey( );
// 总空间
STDCLASSFUN_EXPORT QString& getTotalNumberOfBytesKey( );
// 剩余空间
STDCLASSFUN_EXPORT QString& getTotalNumberOfFreeBytes( );

/***************************/
// 过滤状态
//typedef enum STDCLASSFUN_EXPORT FILTER_STATUS_FLAGES {
//	// 其他异常
//	ERROR
//	// 正则匹配
//	, USER_REG_EXP
//	// 一般匹配
//	, USER_NORMAL
//	// 自动
//	, AUTO
//} FILTER_STATUS;

// 获取正则过滤器
STDCLASSFUN_EXPORT QRegExp* getRegExpFilter( );
// 设置正则过滤器
STDCLASSFUN_EXPORT void setRegExpFilter(const QString& reg_exp);
// 设置正则过滤器
STDCLASSFUN_EXPORT void setRegExpFilter(const QRegExp& reg_exp_body);
// 使用正则匹配
STDCLASSFUN_EXPORT int doRegExpFilter(const QString& regExpStr);
// 使用指定的正则表达式进行匹配
STDCLASSFUN_EXPORT int doRegExpFilter(const QString& regExpStr
	, const QString& regExp);
// 使用指定的正则表达式进行匹配
STDCLASSFUN_EXPORT int doRegExpFilter(const QString& regExpStr
	, const QRegExp& regExp);
// 设置一般过滤器
STDCLASSFUN_EXPORT void setNormalFilter(const QString& FilterSuffix);
// 获取一般过滤器
STDCLASSFUN_EXPORT QString* getNormalFilter( );
// 使用一般匹配
STDCLASSFUN_EXPORT bool doNormalFilter(const QString& normalStr);
// 使用指定的匹配规则进行一般匹配
STDCLASSFUN_EXPORT bool doNormalFilter(const QString& normalStr
	, const QString& matchNormalExp);
// 自动过滤，优先使用 filter_Type 过滤器
STDCLASSFUN_EXPORT int doFilter(const QString& completerStr
	, int filter_Type = 0);
// 设置格式
STDCLASSFUN_EXPORT void setFileOutForm(const QString& str);
// 获取格式化
STDCLASSFUN_EXPORT QString* getFileOutForm( );
// 文件自动格式化
STDCLASSFUN_EXPORT QString doFileOutForm(const QString& filePath);
// 设置格式日期
STDCLASSFUN_EXPORT void setFileOutDateTimeForm(const QString& str);
// 获取格式化日期
STDCLASSFUN_EXPORT QString* getFileOutDateTimeForm( );
// 查找字符串
// offset 偏移
STDCLASSFUN_EXPORT int findStr(const QString& srcourceSrtr
	, const QString& targetStr
	, int offset);
// 查找字符串
STDCLASSFUN_EXPORT int findStr(const QString& srcourceSrtr
	, const QString& targetStr);
// 查找字符串
// offset 偏移
STDCLASSFUN_EXPORT int findStr(const char* srcourceSrtr
	, const char* targetStr
	, int offset);
// 查找字符串
STDCLASSFUN_EXPORT int findStr(const char* srcourceSrtr
	, const char* targetStr);
// 追加一个 obj 到容器
STDCLASSFUN_EXPORT void threadVectorAppendObj(QObject* object);
// 释放一个 obj, 不会产生 delete 效果
STDCLASSFUN_EXPORT bool threadVectorReleaseObj(QObject* object = Q_NULLPTR);
// 获取输出锁
class QMutex;
STDCLASSFUN_EXPORT QMutex* getShowMutexObj( );
// 移动或者复制文件
// fileParh 指定文件的目标源目录
// fileOpterator 为 1 时候，将会删除
// file 指定需要复制的文件
// destPtahVector 所有目录
STDCLASSFUN_EXPORT QStringList doFiles(QString* filePath
	, QString file
	, int fileOpterator
	, QVector<QString>* destPtahVector);
// 获取参数
STDCLASSFUN_EXPORT QHash<QString, QVector<QString>> initParameters(int& argc
	, char** argv
	, QString& currentExeName
	, std::function<void (QHash<QString, QVector<QString>>*)> callBack = [](QHash<QString, QVector<QString>>* obj) {});
// 移除单行注释
STDCLASSFUN_EXPORT QString removeComment(const QByteArray& bytes);
// 获取时间间隔
STDCLASSFUN_EXPORT qint64 getSeepTime(QDateTime& left
	, QDateTime& right);
// 获取时间间隔
STDCLASSFUN_EXPORT qint64 getSeepTime(QTime& left
	, QTime& right);
// 转换为秒数
STDCLASSFUN_EXPORT qint64 timeToMsec(QTime& rightTime);
// 获取日期间隔
STDCLASSFUN_EXPORT qint64 getSeepDate(QDateTime& left
	, QDateTime& right);
// 比较日期
// 大于 0 表示 left > right
// 等于 0 表示 left == right
// 小于 0 表示 left < right
STDCLASSFUN_EXPORT int comppareDateTime(QDateTime& left
	, QDateTime& right);
// 比较时间
// 大于 0 表示 left > right
// 等于 0 表示 left == right
// 小于 0 表示 left < right
STDCLASSFUN_EXPORT int comppareTime(QTime& left
	, QTime& right);
// 比较时间
// 大于 0 表示 left > right
// 等于 0 表示 left == right
// 小于 0 表示 left < right
STDCLASSFUN_EXPORT int comppareTime(QDateTime& left
	, QDateTime& right);

// 比较时间
// 大于 0 表示 left > right
// 等于 0 表示 left == right
// 小于 0 表示 left < right
STDCLASSFUN_EXPORT int comppareDate(QDate& left
	, QDate& right);
// 比较时间
// 大于 0 表示 left > right
// 等于 0 表示 left == right
// 小于 0 表示 left < right
STDCLASSFUN_EXPORT int comppareDate(QDateTime& left
	, QDateTime& right);
// 获取默认全路径
STDCLASSFUN_EXPORT const QString* getDefaultAbsoluteFilePath( );
// 返回路径是否为默认配置文件路径
STDCLASSFUN_EXPORT bool isDefaultSettingPath(QString absoluteFilePath);
// 获取系统环境变量
STDCLASSFUN_EXPORT int getSystemEnv(QMultiHash<QString, QString>& eventMap);
#endif // STDCLASSFUN_H
